package models

import (
	"gorm.io/gorm"
	"time"
)

func (*EditorMaterialAuditData) TableName() string {
	return "editor_material_audit_data"
}

func (*EditorMaterialAuditDataTempDaily) TableName() string {
	return "editor_material_audit_data_temp_daily"
}

func (*EditorMaterialAuditDataTempUpdateHistory) TableName() string {
	return "editor_material_audit_data_temp_history"
}

type EditorMaterialAuditData struct {
	ID                    int     `json:"id" gorm:"primarykey"`     // 主键ID
	Key                   string  `json:"key"`                      // 表格key
	MediaID               int     `json:"media_id"`                 // 媒体ID
	EditorID              int     `json:"editor_id"`                // 剪辑ID
	EditorName            string  `json:"editor_name"`              // 剪辑姓名
	GroupID               int     `json:"group_id"`                 // 部门ID
	TeamID                int     `json:"team_id"`                  // 小组ID
	FileCreateDate        string  `json:"file_create_date"`         // 文件创建日期
	FileID                int     `json:"file_id"`                  // 文件ID
	FileDatePrefix        string  `json:"file_date_prefix"`         // 文件日期前缀
	FileName              string  `json:"file_name"`                // 素材文件名
	AuditStatus           int     `json:"audit_status"`             // 审核状态 0未过审 1通过 2其他
	AuditStatusInitOrigin int     `json:"audit_status_init_origin"` // 原始源素材的初始审核状态
	Cost                  float64 `json:"cost"`                     // 总消耗
	Gmv                   float64 `json:"gmv"`                      // 成交额
	Roi                   string  `json:"roi"`                      // ROI
	PushStatus            int     `json:"push_status"`              // 推送状态 0未推送 1已推送
	AuditSuccessCount     int     `json:"audit_success_count"`      // 审核通过数量
	DeriveFrom            int     `json:"derive_from"`              // 衍生源文件ID
	DerivedFileCount      int     `json:"derived_file_count"`       // 衍生文件数量
	DeriveType            string  `json:"derive_type"`              // 衍生类型
	ReportData            string  `json:"report_data"`              // 推送数据 JSON
	AuditStatusOrigin     int     `json:"audit_status_origin"`      // 原始源素材的审核状态
	Click                 int     `json:"click"`                    // 点击量
	Show                  int     `json:"show"`                     // 展示量
	Convert               int     `json:"convert"`                  // 转化数
	ValidPlay             int     `json:"valid_play"`               // 有效播放数
	TotalPlay             int     `json:"total_play"`               // 总播放数
	Currency              string  `json:"currency"`                 // 货币单位

	CreatedAt string `json:"created_at"` // 创建时间
	UpdatedAt string `json:"updated_at"` // 更新时间
}

type EditorMaterialAuditDataTempDaily struct {
	EditorMaterialAuditData
}

type EditorMaterialAuditDataTempUpdateHistory struct {
	EditorMaterialAuditData
}

// BeforeCreate GORM 的钩子函数，会在创建记录前被调用
func (r *EditorMaterialAuditDataTempUpdateHistory) BeforeCreate(*gorm.DB) (err error) {
	r.CreatedAt = time.Now().Format(time.DateTime) // 设置当前时间
	r.UpdatedAt = time.Now().Format(time.DateTime) // 设置当前时间
	return nil
}

func (r *EditorMaterialAuditDataTempUpdateHistory) BeforeUpdate(*gorm.DB) (err error) {
	r.UpdatedAt = time.Now().Format(time.DateTime) // 设置当前时间
	return nil
}

// BeforeCreate GORM 的钩子函数，会在创建记录前被调用
func (r *EditorMaterialAuditDataTempDaily) BeforeCreate(*gorm.DB) (err error) {
	r.CreatedAt = time.Now().Format(time.DateTime) // 设置当前时间
	r.UpdatedAt = time.Now().Format(time.DateTime) // 设置当前时间
	return nil
}

func (r *EditorMaterialAuditDataTempDaily) BeforeUpdate(*gorm.DB) (err error) {
	r.UpdatedAt = time.Now().Format(time.DateTime) // 设置当前时间
	return nil
}

// BeforeCreate GORM 的钩子函数，会在创建记录前被调用
func (r *EditorMaterialAuditData) BeforeCreate(*gorm.DB) (err error) {
	r.CreatedAt = time.Now().Format(time.DateTime) // 设置当前时间
	r.UpdatedAt = time.Now().Format(time.DateTime) // 设置当前时间
	return nil
}

func (r *EditorMaterialAuditData) BeforeUpdate(*gorm.DB) (err error) {
	r.UpdatedAt = time.Now().Format(time.DateTime) // 设置当前时间
	return nil
}
